# PROMPT_CLS_BAK = """
# 请你根据企业信息，将其归类到 制氢、储氢-运输-注氢、应用领域、其他 类别中：
# * 制氢: 通过一系列物理、化学或生物过程，将其他物质转化为氢气。包括石化能源制氢、工业副产氢、电解水制氢、蒸汽重整制氢、煤气化制氢以及光催化制氢等。
# * 储氢-运输-注氢: 储氢是指将氢气储存起来，以便后续使用、运输和重新注入。储氢技术可以分为高压气态储氢、低温液态储氢、有机液态储氢以及固体材料储氢等。运输则是指将储存好的氢气从一地运送到另一地的过程。注氢包括加氢站。
# * 应用领域:
# * 其他: 若该企业不是氢能企业，也不属于以上任何一类，请选择“其他”类别。

# 下述的industry是企业的一些基本信息。请你一步一步思考，首先在reason中说明你的判断理由，label是你要给出的分类结果。
# industry: {industry_info}
# reason:
# label: """.lstrip()

import copy

HEAD = "请你根据企业信息，将其归类到 {CLS_NAMES} 类别中：\n"

REAR = """
下述的industry是企业的一些基本信息。请你一步一步思考，首先在reason中说明你的判断理由，label是你要给出的分类结果。
industry: {industry_info}
reason: 
label: 
"""


One_CLS = [
    "制氢",
    "储氢-运输-注氢",
    "应用领域",
]

One_Describe = """
* 制氢: 通过一系列物理、化学或生物过程，将其他物质转化为氢气。包括石化能源制氢、工业副产氢、电解水制氢、蒸汽重整制氢、煤气化制氢以及光催化制氢等。
* 储氢-运输-注氢: 储氢是指将氢气储存起来，以便后续使用、运输和重新注入。储氢技术可以分为高压气态储氢、低温液态储氢、有机液态储氢以及固体材料储氢等。运输则是指将储存好的氢气从一地运送到另一地的过程。注氢包括加氢站。
* 应用领域: 包括氢能在交通、工业、发电和建筑领域等实际应用。包括但不限于：
  * **交通领域**：如氢燃料电池汽车、氢燃料飞机、氢动力船舶等。
  * **工业领域**：如用于氢冶金、合成氨、合成甲醇、石油精炼和煤化工等。
  * **发电领域**：如氢能发电站，或与其他可再生能源结合的发电方案。
  * **建筑领域**：如用于供热、供暖，特别是氢气与天然气的混合使用。
* 其他: 不属于以上类别的企业或涉及氢能的其他新兴或边缘应用领域。
"""

Two_Name_1 = [
    "石化能源制氢",
    "工业副产氢",
    "电解水制氢",
    "生物制氢",
]

Two_Describe_1 = """
* 石化能源制氢: 指利用石油、天然气或煤炭等化石燃料，通过蒸汽重整、部分氧化或煤气化等技术，将碳氢化合物转化为氢气的过程。
* 工业副产氢: 指在其他工业过程中作为副产品产生的氢气，如氯碱工业、电石法制乙炔等过程中产生的氢气。
* 电解水制氢: 指通过电解水的方式，将水分解为氢气和氧气。这种方式常与可再生能源结合，用于生产绿色氢气。
* 生物制氢: 指利用生物质或微生物，通过生物化学反应（如发酵、光合成）来生成氢气的过程。
* 其他: 不属于以上类别的企业
"""

Two_Name_2 = ["有机物液体氢", "液态储氢", "固态储氢", "高压气态储氢", "加氢站"]

Two_Describe_2 = """
* 有机物液体氢: 指利用有机液态化合物（如甲酸、甲醇或液态有机氢化物）储存和释放氢气的技术。这种方法通过化学反应在有机液体中可逆地存储和释放氢气。
* 液态储氢: 指通过将氢气在极低温度下冷却并液化，以液态形式储存的技术。这种方法要求储罐具有良好的保温性，以维持液态氢的低温环境。
* 固态储氢: 指利用金属氢化物、化学氢化物或纳米材料等固体物质来吸附和释放氢气的技术，这种方法通常具有较高的储氢密度。
* 高压气态储氢: 指将氢气压缩至高压气态，并以气态形式储存在高压气瓶中的技术。
* 加氢站: 指为氢燃料电池车辆、储氢设备等提供氢气加注服务的设施，通常包括氢气储存、压缩、冷却和加注等功能。
* 其他: 不属于以上类别的企业
"""

Two_Name_3 = ["氢动力车-船-航天", "燃料电池", "医疗健康", "发电供热"]
Two_Describe_3 = """
* 氢动力车-船-航天: 指利用氢能作为动力来源的车辆、船舶或航天器。包括氢燃料电池汽车、氢动力船舶，以及在航空航天领域中应用氢燃料的技术。
* 燃料电池: 指通过氢燃料电池将氢气和氧气的化学能直接转化为电能的装置或技术。燃料电池广泛应用于车辆、电力系统和便携式设备等多个领域。
* 医疗健康: 指氢能技术在医疗和健康领域的应用，如通过氢气吸入或饮用氢水进行抗氧化治疗、减轻炎症或改善健康等。
* 发电供热: 指利用氢气作为能源进行发电或供热的技术和设施，包括氢能发电站、氢能锅炉等，为住宅、工业或商业用途提供电力和热能。
* 其他: 不属于以上类别的企业
"""

def get_prompt_cls(cls_names: list, describe: str) -> str:
    cls_names = copy.deepcopy(cls_names)
    if cls_names[-1] != "其他":
        cls_names.append("其他")

    cls_names = "、".join(cls_names)
    head = HEAD.format(CLS_NAMES=cls_names)
    return f"{head}{describe}{REAR}"


TOTAL_CLS = {
    "制氢": Two_Name_1,
    "储氢-运输-注氢": Two_Name_2,
    "应用领域": Two_Name_3,
}

TOTAL_PROMPT = {
    "制氢": get_prompt_cls(Two_Name_1, Two_Describe_1),
    "储氢-运输-注氢": get_prompt_cls(Two_Name_2, Two_Describe_2),
    "应用领域": get_prompt_cls(Two_Name_3, Two_Describe_3),
}


# 大模型推理
def trans_data(item, PROMPT):
    business = item.get("经营范围")
    industry_name = item.get("企业名称")
    large = item.get("大类名称")
    mid = item.get("中类名称")
    small = item.get("小类名称")
    text = f"{industry_name}：经营范围包括{business}；登记产业链信息为:{large} {mid} {small}；"
    item["prompt"] = PROMPT.format(industry_info=text)
    return item


if __name__ == "__main__":
    print(get_prompt_cls(One_CLS, One_Describe))
    print(get_prompt_cls(Two_Name_1, Two_Describe_1))
    print(get_prompt_cls(Two_Name_2, Two_Describe_2))
    print(get_prompt_cls(Two_Name_3, Two_Describe_3))

    from pprint import pprint

    pprint(TOTAL_CLS)
